let max = 8;
let eight = new Array(max);
let sum = 0;
setPosition(0);
console.log(sum);

function setPosition(n){
  if(n === max){
    console.log(eight);
    sum++;
    return;
  }
  for(let i = 0; i<max; i++){
    eight[n] = i; //先放
    if(check(n)){   //判断是否冲突
      setPosition(n + 1);  //没有冲突继续往下放下一个皇后，这不能return，不然只能算出一种解法
    }
    //冲突就往后放一位
  }
}
function check(n){
  //从第0层开始判断
  for(let i = 0; i<n; i++){
    //eight[i] === eight[n]判断是否同一列，Math.abs(eight[i] - eight[n]) === Math.abs(i - n)判断是否同一对角线
    if(eight[i] === eight[n] || Math.abs(eight[i] - eight[n]) === Math.abs(i - n)){
      return false;
    }
    //不是同一列或同一对角线，继续往下一层判断
  }
  return true;
}